package mywebsocket

// import (
// 	"context"
// 	"encoding/json"
// 	"fmt"
// 	"sync"
// 	"time"

// 	"github.com/gin-gonic/gin"
// 	"github.com/go-redis/redis/v8"
// 	"github.com/gorilla/websocket"
// )

// type Connection struct {
// 	ConnID     string `json:"conn_id"`
// 	LastActive int64  `json:"last_active"`
// }

// type Manager struct {
// 	rdb *redis.Client
// 	mu  sync.Mutex
// }

// func NewManager(rdb *redis.Client) *Manager {
// 	return &Manager{rdb: rdb}
// }

// // Gin中间件：将Manager实例注入上下文
// func (m *Manager) Middleware() gin.HandlerFunc {
// 	return func(c *gin.Context) {
// 		c.Set("wsManager", m)
// 		c.Next()
// 	}
// }

// func (m *Manager) Add(conn *websocket.Conn) {
// 	connID := fmt.Sprintf("%p", conn) // 使用连接指针作为唯一标识符
// 	connData := Connection{
// 		ConnID:     connID,
// 		LastActive: time.Now().Unix(),
// 	}
// 	connDataJSON, _ := json.Marshal(connData)
// 	m.rdb.Set(context.Background(), connID, connDataJSON, 0)
// }

// func (m *Manager) Remove(conn *websocket.Conn) {
// 	connID := fmt.Sprintf("%p", conn)
// 	m.rdb.Del(context.Background(), connID)
// }

// func (m *Manager) GetAll() []*Connection {
// 	var conns []*Connection
// 	keys := m.rdb.Keys(context.Background(), "*").Val()
// 	for _, key := range keys {
// 		connDataJSON, _ := m.rdb.Get(context.Background(), key).Result()
// 		var connData Connection
// 		json.Unmarshal([]byte(connDataJSON), &connData)
// 		conns = append(conns, &connData)
// 	}
// 	return conns
// }

// func (m *Manager) UpdateActive(conn *websocket.Conn) {
// 	connID := fmt.Sprintf("%p", conn)
// 	connDataJSON, _ := m.rdb.Get(context.Background(), connID).Result()
// 	var connData Connection
// 	json.Unmarshal([]byte(connDataJSON), &connData)
// 	connData.LastActive = time.Now().Unix()
// 	byteData, _ := json.Marshal(connData)
// 	connDataJSON = string(byteData)
// 	m.rdb.Set(context.Background(), connID, connDataJSON, 0)
// }
